home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cpp_libs / rjs.lha / RJS / Directory / src / Directory.C next >
Encoding:
C/C++ Source or Header  |  1991-06-14  |  1.2 KB  |  81 lines

  1.  
  2. #include "Directory.h"
  3.  
  4. const RJS_Status RJS_Directory::NoDirSpecified("no directory specfied");
  5.  
  6. RJS_Directory::RJS_Directory()
  7. {
  8.     ss_set(NoDirSpecified);
  9. }
  10.  
  11. RJS_Directory::~RJS_Directory()
  12. {
  13.     closedir(dir);
  14. }
  15.  
  16. RJS_Directory::RJS_Directory(const RJS_String &path,DirFmt fmt)
  17. {
  18.     set(path,fmt);
  19. }
  20.  
  21. int RJS_Directory::set(const RJS_String &path,DirFmt fmt)
  22. {
  23.     dirname=path;
  24.     if (dirname.right(1)!='/') dirname += '/';
  25.     dirfmt = fmt;
  26.     dir = opendir(path.cptr());
  27.     if (!dir) {
  28.         ss_set(RJS_Status(errno));
  29.         return 0;
  30.     } else {
  31.         ss_set(SS_success);
  32.         return 1;
  33.     }
  34. }
  35.  
  36. int RJS_Directory::done()
  37. {
  38.     struct direct *dp=readdir(dir);
  39.     return (int) dp;
  40.  
  41. }
  42. int RJS_Directory::next(RJS_String &name)
  43. {
  44.     struct direct *dp=readdir(dir);
  45.  
  46.     if (dp) {
  47.         name = dp->d_name;
  48.         if (dirfmt==FullPath) name = dirname+name;
  49.         return 1;
  50.     } else {
  51.         name = "";
  52.         return 0;
  53.     }
  54. }
  55.  
  56. long RJS_Directory::position()
  57. {
  58.     return telldir(dir);
  59. }
  60.  
  61. void RJS_Directory::moveto(long pos)
  62. {
  63.     seekdir(dir,pos);
  64.     ss_set(SS_success);
  65. }
  66.  
  67. void RJS_Directory::reset()
  68. {
  69.     rewinddir(dir);
  70.     ss_set(SS_success);
  71. }
  72.  
  73. int RJS_Directory::number()
  74. {
  75.     struct direct *dp;
  76.     int num=0;
  77.     rewinddir(dir);
  78.     while (dp=readdir(dir)) num++;
  79.     return num;
  80. }
  81.